﻿using System;
using System.Collections;
using System.Windows.Forms;
using AppQlyNhaSach.MatHang;
using BLL_NhaSach;
using DevExpress.XtraEditors;

namespace AppQlyNhaSach.PhieuNhap
{
	public partial class frmPhieuNhap : DevExpress.XtraEditors.XtraForm
	{
		private ArrayList lstPN;
		private PhieuNhapBLL pnBLL;
		private SachBLL sachBLL;

		public frmPhieuNhap()
		{
			InitializeComponent();
		}

		private void frmPhieuNhap_FormClosing(object sender, FormClosingEventArgs e)
		{
			frmMainNS.isPhieuNhap = false;
		}

		private void frmPhieuNhap_Load(object sender, EventArgs e)
		{
			lstPN = new ArrayList();
			pnBLL = new PhieuNhapBLL(Properties.Settings.Default.ConnectionStringUser);
			txtTenNV.Text = frmMainNS.nvLogIn.HoTen;
			txtChucVu.Text = frmMainNS.nvLogIn.ChucVu.TenChucVu;
			txtMa.Text = pnBLL.getNextID().ToString();
			sachBLL = new SachBLL(Properties.Settings.Default.ConnectionStringUser);
			cboTenMH.DataSource = sachBLL.getAllData();
			cboTenMH.DisplayMember = "TenSach";
			cboTenMH.ValueMember = "MaSach";
			cboTenMH.SelectedIndexChanged += new EventHandler(cboTenMH_SelectedIndexChanged);
			cboTenMH.SelectedIndex = 0;
			NhaCungCapBLL nccBLL = new NhaCungCapBLL(Properties.Settings.Default.ConnectionStringUser);
			cboNCC.DataSource = nccBLL.getAllData();
			cboNCC.DisplayMember = "TenNCC";
			cboNCC.ValueMember = "MaNCC";
		}

		private void cboTenMH_SelectedIndexChanged(object sender, EventArgs e)
		{
			txtSLgTon.Text = pnBLL.getSoLuong(cboTenMH.SelectedValue.ToString()).ToString();
		}

		private void btnReset_Click(object sender, EventArgs e)
		{
			txtDonGia.Text = "";
			txtSoLuong.Text = "";
		}

		private void btnThem_Click(object sender, EventArgs e)
		{
			try
			{
				if (txtDonGia.Text != "")
				{
					decimal giabia = decimal.Parse(txtDonGia.Text);
				}
				int soluong = int.Parse(txtSoLuong.Text);
				if (soluong >= Properties.Settings.Default.SLNhapMin)
				{
					int soluongton = int.Parse(txtSLgTon.Text);
					if (soluongton < Properties.Settings.Default.SLTonMin)
					{
						SachAdd s = new SachAdd();
						s.id = cboTenMH.SelectedValue.ToString();
						s.tenMH = pnBLL.getTen(cboTenMH.SelectedValue.ToString());
						s.soluong = soluong;
						if (txtDonGia.Text != "")
							s.giabia = decimal.Parse(txtDonGia.Text);
						lstPN.Add(s);
						grdPhieuNhap.DataSource = lstPN;
						grdPhieuNhap.RefreshDataSource();
					}
					else XtraMessageBox.Show("Số lượng tồn phải nhỏ hơn 300 mới được nhập thêm sản phẩm");
				}
				else XtraMessageBox.Show("Số lượng thêm vào phải lớn hơn 150");
			}
			catch (Exception)
			{
				XtraMessageBox.Show("Dữ liệu chưa được nhập hoặc nhập sai");
			}
		}

		private class SachAdd
		{
			public String id { get; set; }

			public String tenMH { get; set; }

			public decimal giabia { get; set; }

			public int soluong { get; set; }
		}

		private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
		{
		}

		private void xóaToolStripMenuItem_Click(object sender, EventArgs e)
		{
			System.Windows.Forms.DialogResult r = XtraMessageBox.Show("Bạn có chắc chắn muốn xóa mặt hàng này?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
			if (r == System.Windows.Forms.DialogResult.Yes)
			{
				int[] ids = gridView1.GetSelectedRows();
				String id = (String)gridView1.GetRowCellValue(ids[0], "id");
				foreach (SachAdd s in lstPN)
				{
					if (s.id.Equals(id))
					{
						lstPN.Remove(s);
						break;
					}
				}
				grdPhieuNhap.RefreshDataSource();
			}
		}

		private void btnSave_Click(object sender, EventArgs e)
		{
			System.Windows.Forms.DialogResult r = XtraMessageBox.Show("Bạn có muốn lưu lại hóa đơn vào hệ thống không?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
			if (r == System.Windows.Forms.DialogResult.Yes)
			{
				if (lstPN.Count > 0)
				{
					CTPhieuNhapBLL ctBLL = new CTPhieuNhapBLL(Properties.Settings.Default.ConnectionStringUser);
					SachBLL sachBLL = new SachBLL(Properties.Settings.Default.ConnectionStringUser);
					DAL_NhaSach.PhieuNhap pn = new DAL_NhaSach.PhieuNhap();
					pn.MaNCC = int.Parse(cboNCC.SelectedValue.ToString());
					pn.MaNV = frmMainNS.nvLogIn.MaNV;
					pn.NgayNhap = dtpNgayNhap.Value;
					pnBLL.addObject(pn);
					LichSuKhoBLL lsBLL = new LichSuKhoBLL(Properties.Settings.Default.ConnectionStringUser);
					foreach (SachAdd s in lstPN)
					{
						//thêm lịch sử kho
						DAL_NhaSach.LichSuKho kho = new DAL_NhaSach.LichSuKho();
						kho.MaSach = s.id;
						kho.NgayPS = dtpNgayNhap.Value;
						int soluongDau = ((DAL_NhaSach.Sach)sachBLL.findObjects(cboTenMH.SelectedValue.ToString())).SoLuongTon;
						kho.SoLuongDau = soluongDau;
						kho.SoLuongPS = s.soluong;
						lsBLL.addObject(kho);
						//cập nhật lại số lượng
						pnBLL.updateSoluong(s.id, s.giabia, s.soluong);
						DAL_NhaSach.Sach sa = (DAL_NhaSach.Sach)sachBLL.findObjects(s.id);

						DAL_NhaSach.ChiTietPhieuNhap ct = new DAL_NhaSach.ChiTietPhieuNhap();
						ct.MaPhieuNhap = int.Parse(txtMa.Text);
						ct.MaSach = sa.MaSach;
						ct.DonGia = sa.GiaBia;
						ct.SoLuong = s.soluong;
						ctBLL.addObject(ct);
					}

					lstPN.Clear();
					grdPhieuNhap.RefreshDataSource();
					XtraMessageBox.Show("Thêm hóa đơn thành công");
					this.Close();
				}
				else XtraMessageBox.Show("Chưa có mặt hàng trong hóa đơn");
			}
		}

		private void btnThemMoi_Click(object sender, EventArgs e)
		{
			frmThemMH themMH = new frmThemMH();
			System.Windows.Forms.DialogResult r = themMH.ShowDialog();
			if (r == System.Windows.Forms.DialogResult.OK)
			{
				cboTenMH.DataSource = sachBLL.getAllData();
				cboTenMH.DisplayMember = "TenSach";
				cboTenMH.ValueMember = "MaSach";
			}
		}
	}
}